PPVDEMO - README

Commerce Server Pay-Per-View Demonstration

Helix Server's commerce feature allows an administrator to restrict which users can access clips served by Helix Server. When Helix Server receives a request for secured content, it checks the list of authorized users to see whether the request is from someone who's allowed to receive it.

You don't need to add users to a list of authorized users one-by-one; this demonstration shows how you can use CGI and customized HTML files to allow users to register themselves via Web pages. Use the demonstration to see how Helix Server can integrate with your Web server. Customize the files yourself to match your site's own needs.

Requirements for running the demonstration:
- Commerce Server Edition of Helix Server
- Web Server running on the same host as Helix Server
- Web Server configured to execute CGI programs

Steps to Set Up the Commerce Server PPV Demo

1. Copy sample media files.
2. Copy sample CGI program and configuration file to your Web server.
3. Copy sample HTML pages to your web server.
4. Configure the Real Server Commerce feature.
5. Edit PPVDemo configuration file.
6. Edit sample HTML pages.
7. Browse to welcome.html and start registering.
8. Web Browser Configuration Considerations.
9. Customizing the PPVDemo Source.
10. Debugging.

1. Copy the Sample Media Files

Copy the supplied sample media files to a secure Helix Server directory.

Copy: (Helix Server main directory)/Commerce/media/sample1.rm
(Helix Server main directory)/Commerce/media/sample2.rm

To: (Helix Server main directory)/Secure

Note: PPVDemo can use any media files, as long as they are named "sample1.rm" or "sample2.rm". If you change the media file name you will have to modify the secure and permissions.html pages.

2. Copy the Sample CGI Program and Configuration File to Your Web Server

Copy the ppvdemo.exe program and ppvdemo.ini file to an appropriate CGI directory of the your Web server.

Copy: (Helix Server main directory)/Commerce/bin/ppvdemo.exe
(Helix Server main directory)/Commerce/bin/ppvdemo.ini

To: A CGI directory served by your Web server
Example: Copy ppvdemo.ini and ppvdemo.exe into the web servers directory where CGI scripts are installed.

3. Copy Sample HTML Pages to Your Web Server

Copy all supplied html files to a Web Server document directory.

Copy: (Helix Server main directory)/Commerce/html/permissions.html
(Helix Server main directory)/Commerce/html/register.html
(Helix Server main directory)/Commerce/html/secure.html
(Helix Server main directory)/Commerce/html/welcome.html
(Helix Server main directory)/Commerce/html/image/rm_.gif
(Helix Server main directory)/Commerce/html/image/rnlogo.gif

To: The document path served by the your Web server

Copy all supplied gif files to an Web Server image directory.

Copy: (Helix Server main directory)/Commerce/html/image/rm_.gif
(Helix Server main directory)/Commerce/html/image/rnlogo.gif

To: The image directory served by the your Web server

Example: Copy *.html into the c:\inetpub\wwwroot directory. and
Copy the *.gif into the C:\inetpub\wwwroot\image directory.
4. Configure the Real Server Commerce feature
Configure the Real Server security context by entering these values into the Real Server Administrative Interface. Test the Security configuration directly from the Real Player before trying the PPVDemo.
Define User Database using a Flat File style database
Database Name =PPVDemo
Database Type = Flat File
Database File Name =C:\Program Files\Real\Helix Server\con_r_db
Define Authentication using a PPVDemo realm
Real Description=PPVDemo
Realm ID=(hostname).PPVDemo
Authentication Protocol=Basic
Database=PPVDemo
(Add a user)
Establish Commerce Rules
Rule Name= PPVDemo
ProtectedPath=\secure
Database=PPVDemo
Evaluate Permissions=Yes
Allow Duplicates=Yes
Credential Type= Use User Authentication
Realm=PPVDemo
(Set access Permission)
Real Player URL to test content - http:\\(localhost):8008\ramgen\secure\sample1.rm or rtsp:\\(localhost)\secure\sample1.rm
5. Edit the PPVDemo Configuration File

The ppvdemo.ini file is a plain text file used by the PPVDemo program. Now that you've copied ppvdemo.ini to your Web server, open it in its new location and edit it with a text editor. On each line that does not begin with a semi-colon (;), substitute the correct values for any that do not match your Helix Server or Web server configuration.

;Configuration File for the PPVDemo CGI Executable
;
; The file contains variables which are read by the ppvdemo CGI executable. To run the
; demo from a Web Server, edit the variables ; according to the comments above each entry.
;
; Note: This file uses ";" characters as comment ; marks at the start of each line.
;
;======================================================
[Urls]
;
; Provide the qualified URL to the permissions.html file
Permissions=http://hostname/path/permissions.html
;
; Provide the qualified URL to the secure.html file
Redirect=http://hostname/path/secure.html
;
; Provide the qualitifed URL to the CGI executable file
Cgi=http://hostname/cgi-bin/ppvdemo.exe
;=======================================================
; This Section is for Player Based Authentication Only
;
; Protocol used by the server to register the Player
Protocol=rtsp
;
; Provide the hostname or IP address of the Helix Server
Server=hostname
;
; Port user by the server for the streaming media protocol
Port=554
;
; Provide the value of the GUIDRegistrationPrefix variable in the Helix Server configuration file
Prefix=register
;
; Enter the file used by the Helix Server to capture PlayerIDs
File=register.rm
;
;=======================================================
; This Section Defines Helix Server Configuration Variables
;
[System]
;
; Provide the absolute path to the Helix Server PPV Plugin
Plugin=C:\Program Files\Real\Helix Server\Plugins\ppvb3260.dll
;
; Provide the absolute path and database name specified in the Helix Server configuration file
Database=C:\Program Files\Real\Helix Server\con_r_db
;
; Provide the AuthenticationRealm used for content in the Helix Server configuration file
Realm=hostname.ppvdemo
;
; Set the Authentication Mode (0= Player Based, 1= User Based)
AuthMode=1
; Set the Debug Mode (0= Debug Off, 1= Debug On)
Debug=1

Sample PPVDemo.ini file for the PPVDemo.

[Urls]
Permissions=http://localhost/permissions.html
Redirect=http://localhost/secure.html
Cgi=http://localhost/scripts/ppvdemo.exe
Protocol=rtsp
Server=localhost
Port=554
Prefix=register
File=register.rm
[System]
Plugin=C:\Program Files\Real\Helix Server\Plugins\ppvb3260.dll
Database=C:\Program Files\Real\Helix Server\con_r_db
Realm=PPVDemo
AuthMode=1

Note: The ppvdemo.exe program accepts two commands: insertuser or grantaccess. Web pages supply the commands, based on what the user typed.

Example of insertuser command:
ppvdemo.exe?command=insertuser&userid=testuser&password=testpassword

Example of grantaccess command:
ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/test.rm&urltype=0&permissiontype=0&permissionlength=0 ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/test.rm&urltype=0&permissiontype=1&permissionlength=12/12/2012:12:00:00 ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/test.rm&urltype=0&permissiontype=2&permissionlength=12
ppvdemo.exe?command=granataccess&userid=testuser&password=testpassword&url=secure/test.rm&urltype=0&permissiontype=2&permissionlength=0

6. Edit Sample HTML Pages

A. In register.html (which you just copied to your Web server), locate the following text:

<form action="http://localhost:80/cgi-bin/ppvdemo.exe" METHOD="GET">

Replace the following text:

http://localhost:80/cgi-bin/ppvdemo.exe

with the URL of the ppvdemo.exe file (which you copied to your Web server in Step 2) as it resides on your Web server.
B. In permissions.html (which you just copied to your Web server), find the text:

<form name="pForm" action="http://localhost:80/cgi-bin/ppvdemo.exe" METHOD="GET">

Replace the following text:

http://localhost:80/cgi-bin/ppvdemo.exe

with the URL of the ppvdemo.exe file (which you copied to your Web server in Step 2) as it resides on your Web server.

C. Also in permissions.html, locate the following text:

Make sure the following text in this section matches the name and path of the Secure directory on your Helix Server:

value="secure/sample1.rm"
value="secure/sample2.rm"

D. In secure.html (which you just copied to your Web server), locate the following lines:

<li><A HREF="http://localhost:8080/ramgen/secure/sample1.rm"> Sample #1</A>
<li><A HREF="http://localhost:8080/ramgen/secure/sample2.rm"> Sample #2</A>

If your Helix Server secure directory is not named "secure", replace the word "secure" in the URL with the correct directory name.

7. Browse to welcome.html and start registering!

Start the demonstration by pointing your browser to the welcome.html page. Click on "Click here to register" and you'll see how you or your users can self-register.

8. Web Browser Configuration Considerations

The PPVDemo requires read and write access to the local directory.

PPVDemo is a CGI like program and will run as a child process to the Web Server. The Web Server will need sufficient access rights to access the Real Server Authentication Database.

9. Customizing the PPVDemo Source

The PPVDemo program is a standalone application that can be executed from either the command prompt or as a CGI program called by your Web browser. The PPVDemo executable can be built from the following files:

Source Code | ppvdemo.cpp ppvini.cpp ppvtime.cpp
Header Files | ppvdemo.h ppvini.h ppvtime.h
RMA SDK Header files | pncom.h pnresults.h pntypes.h rmaplugn.h os.h (Win32 only)

CGIHTML - http://www.eekim.com Version 1.69

cgi-lib.c
cgi-llist.c
html-lib.c
string-lib.c
cgi-lib.h
cgi-llist.h
html-lib.h
string-lib.h

Authentication Access routines | ppvmd5c.c ppvmd5chl.c ppvmd5.h
Building PPVdemo | Preprocessor Definitions: WIN32,_WIN32,_M_IX386,_LITTLE_ENDIAN, _WINDOWS,STRICT,_DEBUG,DEBUG,_CONSOLE,_MBCS

Building the PPVDemo executable

Win32 - Make a MVC project and include the above list of source files.
Include the Preprocessor Definitions and compile into a executable.

Unix - Construct a makefile that compiles the above list of source files into an executable.

10: Debugging

Edit the PPVDemo.ini and set debug=1. This will instruct PPVDemo to create in the local directory a file named PPVDEMO.dmp. The Debug option is helpful when you need to debug the PPVDEMO application in an environment when running as a child process of the Web Server. If you set the debug=1 option on and you still do not receive a PPVDEMO.DMP file, then you can assume that the Web Sever is running PPVDEMO with insufficient access right. PPVDemo.exe does not have access rights to write to the local disk.

The PPVDemo debug sample provides clues to where a possible invalid configuration can occur.

===PPVDemo====()
Debug=(1)
szDatabase=(C:\Program Files\Real\Helix Server\con_r_db)
szPluginName=(C:\Program Files\Real\Helix Server\Plugins\ppvb3260.dll)
Plugin instance found=()
Interface IID_IRMAPPVDatabase found=()
DataBase Opened=()
szCommand=(insertuser)
===Insert User====()
szUserid=(PPVDemo)
szPasswrd=(password)
szRealm=(PPVDemo)
szAuthMode=(1)
szPermissionsUrl=(http://localhostl/permissions.html)
MD5Data=(PPVDemo:PPVDemo:password)
authKey=(e50cfc58340386d2de2c0740b041bf6c)
Cleanup=()

PPVDemo includes a third part source CGIHTML. This product has an interactive feature. Once you have installed the PPVDEMO application and have configured the PPVDEMO.ini file you can execute PPVDEMO.exe from the command. line and PPVDEMO.exe will prompt you for a HTTP statement. You can enter it directly into the console and PPVDEMO.exe will go to work on your submitted HTTP statement.

PPVDemo interactive Mode sample:

C:\Inetpub\Scripts>ppvdemo
--- cgihtml Interactive Mode ---
Enter CGI input string. Remember to
Press ENTER when done:
http:\\localhost:8080\scripts\ppvdemo.exe?command=insertuser&userid=testuser&password=testpassword